home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- ### BEGIN INIT INFO
- # Provides: x-display-manager kdm
- # Required-Start: $local_fs $remote_fs hal
- # Required-Stop: $local_fs $remote_fs hal
- # Should-Start: console-screen
- # Should-Stop: console-screen
- # Default-Start: 2 3 4 5
- # Default-Stop: 0 1 6
- # Short-Description: X display manager for KDE
- # Description: KDM manages a collection of X servers, which may be on the local host or remote machines.
- ### END INIT INFO
- # /etc/init.d/kdm: start or stop the X display manager
- # Script originally stolen from the xdm package
- #
- # description: K Display Manager
- #
- set -e
-
- # Import the LSB init functions
- . /lib/lsb/init-functions
-
- # To start kdm even if it is not the default display manager, change
- # HEED_DEFAULT_DISPLAY_MANAGER to "false."
- HEED_DEFAULT_DISPLAY_MANAGER=true
- DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
-
- PATH=/bin:/usr/bin:/sbin:/usr/sbin
- DAEMON=/usr/bin/kdm
- PIDFILE=/var/run/kdm.pid
- UPGRADEFILE=/var/run/kdm.upgrade
-
- # parameters to support kdm customization
- KDMRC=/etc/kde4/kdm/kdmrc
- BACKGROUNDRC=/etc/kde4/kdm/backgroundrc
-
- #if configuration is changed by kdmtheme or other tools, don't do magick
- if grep -q "Theme=@@@ToBeReplacedByDesktopBase@@@" ${KDMRC} && grep -q "Wallpaper=default_blue.jpg" ${BACKGROUNDRC}
- then
-
-
-
- KDMOVERRIDEDIR=/etc/default/kdm.d
- KDMCFGDIR=/var/run/kdm
- KDMCFG=$KDMCFGDIR/kdmrc
- BACKGROUNDCFG=$KDMCFGDIR/backgroundrc
-
- test -x $DAEMON || exit 0
-
- # uncomment, if you want auto-logon to be runlevel-dependant
- #test "$runlevel" || { runlevel=`runlevel`; runlevel=${runlevel#* }; }
- #test "$runlevel" = 4 && ARG=-autolog || ARG=-noautolog
-
- # uncomment, if you want tons of debug info in your syslog
- #ARG="$ARG -debug 255"
-
- # we use an alternative kdm master configuration file
- ARG="$ARG -config $KDMCFG"
-
- # we source overrides. run-parts sorts the list in a predictable order
- if [ -d "$KDMOVERRIDEDIR" ]; then
- for part in $(run-parts --list "$KDMOVERRIDEDIR" 2>/dev/null || true); do
- . "$part"
- done
- fi
-
- # we generate kdm configuration files
- genkdmconf --in $KDMCFGDIR 1> /dev/null
-
- # we update kdm configuration files (only overridden values)
- [ -n "$USEBACKGROUND" ] && sed -i "s|^#\?UseBackground=.*|UseBackground=$USEBACKGROUND|" $KDMCFG
- [ -n "$BACKGROUNDCFG" ] && sed -i "s|^#\?BackgroundCfg=.*|BackgroundCfg=$BACKGROUNDCFG|" $KDMCFG
- [ -n "$USETHEME" ] && sed -i "s|^#\?UseTheme=.*|UseTheme=$USETHEME|" $KDMCFG
- [ -n "$THEME" ] && sed -i "s|^#\?Theme=.*|Theme=$THEME|" $KDMCFG
- [ -n "$WALLPAPER" ] && sed -i "s|^#\?Wallpaper=.*|Wallpaper=`readlink -f $WALLPAPER`|" $BACKGROUNDCFG
-
-
- fi
- # autologin overrides are useful for live debian environment
- if [ -n "$AUTOLOGINUSER" ]; then
- sed -i "s|^#\?AutoLoginEnable=.*|AutoLoginEnable=true|" $KDMCFG
- sed -i "s|^#\?AutoLoginUser=.*|AutoLoginUser=$AUTOLOGINUSER|" $KDMCFG
- fi
- [ -n "$AUTOLOGINDELAY" ] && sed -i "s|^#\?AutoLoginDelay=.*|AutoLoginDelay=$AUTOLOGINDELAY|" $KDMCFG
- [ -n "$AUTOLOGINAGAIN" ] && sed -i "s|^#\?AutoLoginAgain=.*|AutoLoginAgain=$AUTOLOGINAGAIN|" $KDMCFG
- [ -n "$AUTOLOGINLOCKED" ] && sed -i "s|^#\?AutoLoginLocked=.*|AutoLoginLocked=$AUTOLOGINLOCKED|" $KDMCFG
-
- # If we upgraded the daemon, we can't use the --exec argument to
- # start-stop-daemon since the inode will have changed. The risk here is that
- # in a situation where the daemon died, its pidfile was not cleaned up, and
- # some other process is now running under that pid, start-stop-daemon will send
- # signals to an innocent process. However, this seems like a corner case.
- # C'est la vie!
- if [ -e $UPGRADEFILE ]; then
- SSD_ARGS="--pidfile $PIDFILE --startas $DAEMON"
- else
- SSD_ARGS="--pidfile $PIDFILE --exec $DAEMON"
- fi
-
- stillrunning () {
- if expr "$(cat /proc/$DAEMONPID/cmdline 2> /dev/null)" : "$DAEMON" > /dev/null 2>&1; then
- true
- else
- # if the daemon does not remove its own pidfile, we will
- rm -f $PIDFILE $UPGRADEFILE
- false
- fi;
- }
-
- case "$1" in
- start)
- if [ -e $DEFAULT_DISPLAY_MANAGER_FILE ] &&
- [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] &&
- [ "$(cat $DEFAULT_DISPLAY_MANAGER_FILE)" != "$DAEMON" ]; then
- echo "Not starting K Display Manager (kdm); it is not the default display manager."
- else
- echo -n "Starting K Display Manager: kdm"
- start-stop-daemon --start --quiet $SSD_ARGS -- $ARG || echo -n " already running"
- echo "."
- fi
- ;;
-
- restart)
- /etc/init.d/kdm stop
- if [ -f $PIDFILE ]; then
- if stillrunning; then
- exit 1
- fi
- fi
- /etc/init.d/kdm start
- ;;
-
- reload)
- echo -n "Reloading K Display Manager configuration..."
- if start-stop-daemon --stop --signal 1 --quiet $SSD_ARGS; then
- echo "done."
- else
- echo "kdm not running."
- fi
- ;;
-
- force-reload)
- /etc/init.d/kdm reload
- ;;
-
- stop)
- echo -n "Stopping K Display Manager: kdm"
- if [ ! -f $PIDFILE ]; then
- echo " not running ($PIDFILE not found)."
- exit 0
- else
- DAEMONPID=$(cat $PIDFILE | tr -d '[:blank:]')
- KILLCOUNT=1
- if [ ! -e $UPGRADEFILE ]; then
- if start-stop-daemon --stop --quiet $SSD_ARGS; then
- # give kdm's signal handler a second to catch its breath
- sleep 1
- else
- echo -n " not running"
- fi
- fi
- while [ $KILLCOUNT -le 5 ]; do
- if stillrunning; then
- kill $DAEMONPID
- else
- break
- fi
- sleep 1
- KILLCOUNT=$(( $KILLCOUNT + 1 ))
- done
- if stillrunning; then
- echo -n " not responding to TERM signal (pid $DAEMONPID)"
- else
- rm -f $UPGRADEFILE
- fi
- fi
- echo "."
- ;;
- status)
- status_of_proc -p "$PIDFILE" "$DAEMON" kdm && exit 0 || exit $?
- ;;
-
- *)
- echo "Usage: /etc/init.d/kdm {start|stop|restart|reload|force-reload|status}"
- exit 1
- ;;
- esac
-
- exit 0
-